nethackfandomcom-20200214-history
Source:Hack 1.0/hack.h
Below is the full text to hack.h from the source code of Hack 1.0. To link to a particular line, write [[Hack 1.0/hack.h#line123]], for example. Warning! This is the source code from an old release. For the latest release, see Source code 1. /* Copyright © Stichting Mathematisch Centrum, Amsterdam, 1984. */ 2. 3. #include "mklev.h" 4. #include "hack.onames.h" 5. 6. #define ON 1 7. #define OFF 0 8. 9. extern struct obj *invent, *uwep, *uarm, *uarm2, *uarmh, *uarms, *uarmg, 10. *uleft, *uright, *fcobj; 11. extern struct obj *uchain; /* defined iff PUNISHED */ 12. extern struct obj *uball; /* defined if PUNISHED */ 13. struct obj *o_at(), *getobj(), *sobj_at(); 14. 15. struct flag { 16. unsigned ident; /* social security number for each monster */ 17. unsigned topl:2; /* a top line (message) has been printed */ 18. /* 0: top line empty; 2: no --More-- reqd. */ 19. unsigned cbreak:1; /* in cbreak mode, rogue format */ 20. unsigned oneline:1; /* give inventories 1 line at a time */ 21. unsigned move:1; 22. unsigned mv:1; 23. unsigned run:3; /* 0: h (etc), 1: H (etc), 2: fh (etc) */ 24. /* 3: FH, 4: ff+, 5: ff-, 6: FF+, 7: FF- */ 25. unsigned nopick:1; /* do not pickup objects */ 26. unsigned echo:1; /* 1 to echo characters */ 27. unsigned botl:1; /* partially redo status line */ 28. unsigned botlx:1; /* print an entirely new bottom line */ 29. unsigned nscrinh:1; /* inhibit nscr() in pline(); */ 30. }; 31. extern struct flag flags; 32. 33. struct prop { 34. #define TIMEOUT 007777 /* mask */ 35. #define LEFT_RING W_RINGL /* 010000L */ 36. #define RIGHT_RING W_RINGR /* 020000L */ 37. #define INTRINSIC 040000L 38. #define LEFT_SIDE LEFT_RING 39. #define RIGHT_SIDE RIGHT_RING 40. #define BOTH_SIDES (LEFT_SIDE | RIGHT_SIDE) 41. long p_flgs; 42. int (*p_tofn)(); /* called after timeout */ 43. }; 44. 45. struct you { 46. xchar ux, uy; 47. schar dx, dy; /* direction of fast move */ 48. #ifdef QUEST 49. schar di; /* direction of FF */ 50. xchar ux0, uy0; /* initial position FF */ 51. #endif QUEST 52. xchar udisx, udisy; /* last display pos */ 53. char usym; /* usually '@' */ 54. schar uluck; 55. int last_str_turn:3; /* 0: none, 1: half turn, 2: full turn */ 56. /* +: turn right, -: turn left */ 57. unsigned udispl:1; /* @ on display */ 58. unsigned ulevel:5; 59. #ifdef QUEST 60. unsigned uhorizon:7; 61. #endif QUEST 62. unsigned utrap:3; /* trap timeout */ 63. unsigned utraptype:1; /* defined if utrap nonzero */ 64. #define TT_BEARTRAP 0 65. #define TT_PIT 1 66. unsigned uinshop:1; 67. 68. 69. /* perhaps these #define's should also be generated by makedefs */ 70. #define TELEPAT LAST_RING /* not a ring */ 71. #define Telepat u.upropsTELEPAT.p_flgs 72. #define FAST (LAST_RING+1) /* not a ring */ 73. #define Fast u.upropsFAST.p_flgs 74. #define CONFUSION (LAST_RING+2) /* not a ring */ 75. #define Confusion u.upropsCONFUSION.p_flgs 76. #define INVIS (LAST_RING+3) /* not a ring */ 77. #define Invis u.upropsINVIS.p_flgs 78. #define GLIB (LAST_RING+4) /* not a ring */ 79. #define Glib u.upropsGLIB.p_flgs 80. #define PUNISHED (LAST_RING+5) /* not a ring */ 81. #define Punished u.upropsPUNISHED.p_flgs 82. #define SICK (LAST_RING+6) /* not a ring */ 83. #define Sick u.upropsSICK.p_flgs 84. #define BLIND (LAST_RING+7) /* not a ring */ 85. #define Blind u.upropsBLIND.p_flgs 86. #define WOUNDED_LEGS (LAST_RING+8) /* not a ring */ 87. #define Wounded_legs u.upropsWOUNDED_LEGS.p_flgs 88. #define PROP(x) (x-RIN_ADORNMENT) /* convert ring to index in uprops */ 89. unsigned umconf:1; 90. char *usick_cause; 91. struct prop upropsLAST_RING+9; 92. 93. unsigned uswallow:1; /* set if swallowed by a monster */ 94. unsigned uswldtim:4; /* time you have been swallowed */ 95. unsigned uhs:3; /* hunger state - see hack.eat.c */ 96. schar ustr,ustrmax; 97. schar udaminc; 98. schar uac; 99. int uhp,uhpmax; 100. long int ugold,ugold0,uexp,urexp; 101. int uhunger; /* refd only in eat.c and shk.c */ 102. int uinvault; 103. struct monst *ustuck; 104. int nr_killedCMNUM+2; /* used for experience bookkeeping */ 105. }; 106. 107. extern struct you u; 108. 109. extern char *traps[]; 110. extern char *plur(), *monnam(), *Monnam(), *amonnam(), *Amonnam(), 111. *doname(), *aobjnam(); 112. extern char readchar(); 113. extern char vowels[]; 114. 115. extern xchar curx,cury; /* cursor location on screen */ 116. 117. extern coord bhitpos; /* place where thrown weapon falls to the ground */ 118. 119. extern xchar seehx,seelx,seehy,seely; /* where to see*/ 120. extern char *save_cm,*killer; 121. 122. extern xchar dlevel, maxdlevel; /* dungeon level */ 123. 124. extern long moves; 125. 126. extern int multi; 127. 128. 129. extern char lock[]; 130. 131. 132. #define DIST(x1,y1,x2,y2) (((x1)-(x2))*((x1)-(x2)) + ((y1)-(y2))*((y1)-(y2))) 133. 134. #define PL_CSIZ 20 /* sizeof pl_character */ 135. #define MAX_CARR_CAP 120 /* so that boulders can be heavier */ 136. #define FAR (COLNO+2) /* position outside screen */ hack.h